The present invention relates to data processing, and more particularly, to the management of software images.
Generally speaking, a software image is a structure that includes software modules residing on a computer (for example, its operating system, application programs, and/or data).
In some cases, it may be desirable to have multiple operating systems available on the same computer. For example, this may be useful to run programs that require different operating systems, or to test new operating systems or new versions thereof.
For this purpose, it is possible to exploit a multi-boot technique. The multi-boot technique allows installing multiple operating systems on the computer, with the possibility of choosing which one to boot when the computer is started. The desired result is achieved by splitting a hard disk of the computer into multiple partitions, each one defining a logical disk storing a corresponding operating system. The computer boots from a primary partition, which includes a boot loader that allows selecting the actual operating system to be started. Alternatively, it is possible to provide a boot partition with a primary boot loader that is simply used to select the desired operating system; the primary boot loader then invokes a secondary boot loader of the selected operating system for its starting.
However, the multi-boot technique is quite rigid, since the partitions of the hard disk are to be defined in advance. In any case, once the selected operating system has been started it has the entire control of the whole hard disk; therefore, the selected operating system may access the other partitions as well (with the risk of damaging them).
Alternatively, the same result may also be achieved by exploiting a virtualization technique. In this case, a hypervisor is installed on the computer. The hypervisor implements a virtualization layer, which emulates multiple virtual machines each one consisting of an abstract environment giving the appearance of a physical computer (which the virtual machine has sole control of). In this way, it is possible to have different operating systems running independently (even at the same time) on corresponding virtual machines.
However, the virtualization technique requires the installation of a complex infrastructure to manage the virtual machines. Moreover, this involves a performance degradation of the computer (since the operating systems do not run natively on the computer any longer).
U.S. Patent Application No. 2009/0193245, the entire disclosure of which is herein incorporated by reference in its entirety, also discloses a method for converting a multi-boot computer into virtual machines. For this purpose, a boot record of the computer is configured to load a hosting operating system that manages the virtual machines. The virtual machines are generated from the corresponding boot images by a converter, which detects and applies the same configurations, and resolves any conflict that may be caused by the concurrent run of the virtual machines. As above, this requires the installation of a virtualization layer (implemented by the hosting operating system); moreover, the operating systems again run in a virtualized environment (provided by the hosting operating system) with corresponding performance degradation.
Another common need is that of making backup copies of the software image of a computer. For example, this may be useful to restore the content of the computer in case of a malfunction.
For this purpose, it is possible to take a snapshot of the software image (i.e., a backup copy thereof in a consistent state at a particular point of time) and the snapshot may be saved onto a backup disk or a backup server. In this way, it is possible to restore the snapshot by re-installing it onto the computer from the backup disk or the back server. However, the process of restoring the snapshot is very slow. In addition, the use of the backup server involves a high consumption of network resources, and moreover, a network connection with the backup server is required to restore the snapshot from it. Alternatively, it is possible to boot the computer remotely from the snapshot on the backup server. However, in this case the computer has to be always connected to the backup server for its operation. In any case, the operation of the computer over the network will result in a degradation of its performance.